#pragma once
#include "ibasetoken.h"
class BaseToken :
	public IBaseToken
{
	int m_nImageID;
	float m_fPosX;
	float m_fPosY;
	float m_fVelX;
	float m_fVelY;
	int m_nWidth;
	int m_nHeight;
	unsigned int m_unRefCount;

protected:
		int m_nTokenID;

		enum TokenTypes { Base_Token, Player_Token, Enemy_Token, Boss_Token, PickUp_Token, Base_Tile };

public:
	BaseToken(void);
	virtual ~BaseToken(void);

	// Interface Methods
	void Update( float fElapsedTime );
	void Render( void );
	RECT GetRect( void ) const;
	void AddRef( void );
	void Release( void );
	bool CheckCollision( IBaseToken* pOther );

	// Accessors
	int GetImageID( void ) const { return m_nImageID; }
	int GetTokenID( void ) const { return m_nTokenID; } // Interface method
	float GetPosX( void )  const { return m_fPosX; }
	float GetPosY( void )  const { return m_fPosY; }
	float GetVelX( void )  const { return m_fVelX; }
	float GetVelY( void )  const { return m_fVelY; }
	int GetWidth( void )   const { return m_nWidth; }
	int GetHeight( void )  const { return m_nHeight; }

	// Mutators
	void SetImageID( int nImgID ) { m_nImageID = nImgID; }
	void SetPosX( float nX )	  { m_fPosX = nX; }
	void SetPosY( float nY )	  { m_fPosY = nY; }
	void SetVelX( float nVX )	  { m_fVelX = nVX; }
	void SetVelY( float nVY )	  { m_fVelY = nVY; }
	void SetWidth( int nWidth )   { m_nWidth = nWidth; }
	void SetHeight( int nHeight ) { m_nHeight = nHeight; }

};

